package com.csun.cmny.provider.device.yingshi.core;

import com.csun.cmny.base.enums.ErrorCodeEnum;
import com.csun.cmny.provider.device.yingshi.entity.YingShiVo;
import com.csun.cmny.provider.exceptions.DmcBizException;
import com.csun.cmny.util.PublicUtil;
import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

/**
 * @Auther: chisj chisj@foxmal.com
 * @Date: 2021/10/12 19:15
 * @Description: TODO
 */
@Slf4j
@Component
public class YingShiHttpClient {

    @Autowired
    private RestTemplate myRestTemplate;

    public YingShiVo request(String url, HttpMethod method, HttpEntity param) {

        ResponseEntity<String> response = myRestTemplate.exchange(url, method, param, String.class);
        YingShiVo yingShiVo = new YingShiVo();

        if (PublicUtil.isEmpty(response)) {
            throw new DmcBizException(ErrorCodeEnum.DMC100622001);
        }
        String body = response.getBody();
        JSONObject jsonObject = JSONObject.fromObject(body);

        String code = jsonObject.getString("code");
        String msg = jsonObject.getString("msg");
        if (!code.equals("200")) {
            throw new DmcBizException(ErrorCodeEnum.DMC100622002, code, msg);
        }

        // yingShiVo = (YingShiVo) JSONObject.toBean(jsonObject, YingShiVo.class);
        yingShiVo.setCode(code);
        yingShiVo.setMsg(msg);
        yingShiVo.setData(jsonObject.get("data"));

        return yingShiVo;
    }

}
